package com.shangxia.dog.commom.vo;

import com.shangxia.dog.commom.enums.ResultEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author zhouya24
 * @date 2021/11/18 15:26
 * @apiNote 公共返回对象
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultVO<T>{
    private Integer code;
    private String message;
    private T data;

    /**
     * @return 结果
     */
    public static ResultVO success() {
        return new ResultVO(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage(), null);
    }

    /**
     * @return 结果
     */
    public static ResultVO error() {
        return new ResultVO(ResultEnum.ERROR.getCode(), ResultEnum.ERROR.getMessage(), null);
    }

    /**
     * @param resultEnum message
     * @return 结果
     */
    public static ResultVO success(ResultEnum resultEnum) {
        return new ResultVO(resultEnum.getCode(), resultEnum.getMessage(), null);
    }

    /**
     * @param message message
     * @return 结果
     */
    public static ResultVO success(String message) {
        return new ResultVO(ResultEnum.SUCCESS.getCode(), message, null);
    }

    /**
     * @param message message
     * @return 结果
     */
    public static ResultVO success(String message, Object obj) {
        return new ResultVO(ResultEnum.SUCCESS.getCode(), message, obj);
    }
    /**
     * @param message message
     * @return 结果
     */
    public static ResultVO error(String message) {
        return new ResultVO(ResultEnum.ERROR.getCode(), message, null);
    }

    /**
     * @param obj data
     * @return 结果
     */
    public static ResultVO success(Object obj) {
        return new ResultVO(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage(), obj);
    }


}
